﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Arthasliu.Uti
{
    public static class UtiGlobal
    {
        public static void GetFirstPinyinCodes(string oriString,ref string pyCode)
        {
            StringBuilder myPinYinCodes = new StringBuilder();

            foreach (var mySingle in oriString)
            {
                //is not chinese char
                if ((int)mySingle >= 33 && (int)mySingle <= 126)
                {
                    myPinYinCodes.Append(mySingle);
                }
                else
                {
                    byte[] myBuffer = new byte[2];
                    myBuffer = System.Text.Encoding.Default.GetBytes(mySingle.ToString());

                    int i = (short)(myBuffer[0] - '\0') * 256 + (short)(myBuffer[1] - '\0');

                    string myCode = string.Empty;

                    if (i < 0xB0A1) myPinYinCodes.Append(string.Empty);
                    else if (i < 0xB0C5) myPinYinCodes.Append("a");
                    else if (i < 0xB2C1) myPinYinCodes.Append("b");
                    else if (i < 0xB4EE) myPinYinCodes.Append("c");
                    else if (i < 0xB6EA) myPinYinCodes.Append("d");
                    else if (i < 0xB7A2) myPinYinCodes.Append("e");
                    else if (i < 0xB8C1) myPinYinCodes.Append("f");
                    else if (i < 0xB9FE) myPinYinCodes.Append("g");
                    else if (i < 0xBBF7) myPinYinCodes.Append("h");
                    else if (i < 0xbfa6) myPinYinCodes.Append("j");
                    else if (i < 0xC0AC) myPinYinCodes.Append("k");
                    else if (i < 0xC2E8) myPinYinCodes.Append("l");
                    else if (i < 0xC4C3) myPinYinCodes.Append("m");
                    else if (i < 0xC5B6) myPinYinCodes.Append("n");
                    else if (i < 0xC5BE) myPinYinCodes.Append("o");
                    else if (i < 0xC6DA) myPinYinCodes.Append("p");
                    else if (i < 0xC8BB) myPinYinCodes.Append("q");
                    else if (i < 0xC8F6) myPinYinCodes.Append("r");
                    else if (i < 0xCBFA) myPinYinCodes.Append("s");
                    else if (i < 0xCDDA) myPinYinCodes.Append("t");
                    else if (i < 0xCEF4) myPinYinCodes.Append("w");
                    else if (i < 0xD1B9) myPinYinCodes.Append("x");
                    else if (i < 0xD4D1) myPinYinCodes.Append("y");
                    else if (i < 0xD7FA) myPinYinCodes.Append("z");
                }
            }

            pyCode = myPinYinCodes.ToString();

            //not complete
            if (myPinYinCodes.Length!=oriString.Length)
            {
                throw new Exception("找不到部分文字的首拼，请您自行填写！");
            }
            
        }
    }
}
